/*
 * Auto.java
 *
 */

package ar.com.educacionit.vehiculos.entidades;


import ar.com.educacionit.base.entidades.Vehiculo;
import ar.com.educacionit.hibernate.manager.EducacionITSessionManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author Sebastian S. Sanga <SebastianSanga@educacionIT.com.ar>
 */
public class Auto extends Vehiculo {
    
    /** Creates a new instance of Auto */
    public Auto() {
    }
    
    public Auto(String marca, String modelo, String color, double precio, int largo, int ancho, int altura, String equipamiento) {
        super(ancho, largo, altura);
        setMarca(marca);
        setModelo(modelo);
        setColor(color);
        setPrecio(precio);
        setEquipamiento(equipamiento);
    }
    
    // Atributos
    private int id;
    private String marca;
    private String modelo;
    private String color;
    private double precio;
    private String equipamiento;
    
    public static Auto obtenerPorPK(long unId) throws HibernateException {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();
        
        // Construye la consulta
        String query = "FROM ar.com.educacionit.hibernate.entities.Auto where id = " + unId;
        
        // Realiza la consulta
        List<Auto> elAuto = session.createQuery(query).list();
        
        // Cierra la sesion de trabajo
        session.close();
        
        // Retorna el concesionario
        if( elAuto != null && elAuto.size() > 0)
            return elAuto.get(0);
        else
            return null;

    }

    public static List obtenerTodos() throws Exception
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Realiza la consulta
        List<Auto> losAutos = session.createQuery("FROM ar.com.educacionit.hibernate.entities.Auto").list();

        // Cierra la sesion de trabajo
        session.close();

        // Retorna los concesionarios
        return losAutos;

    }    
    
    public void insertar() throws Exception
    {

        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Inserta el concesionario
        session.save(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }
    
    public void actualizar() throws Exception
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Actualiza el concesionario
        session.update(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }    

    public void eliminar() throws Exception
    {
        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Elimina el concesionario
        session.delete(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();        
    }            
    
    public String toString(){
        return marca + " " + color  + " " + modelo;
    }       

    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public double getPrecio() {
        return precio;
    }

    public void setPrecio(double precio) {
        this.precio = precio;
    }

    public String getEquipamiento() {
        return equipamiento;
    }

    public void setEquipamiento(String equipamiento) {
        this.equipamiento = equipamiento;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    
}
